// src/Service/userService.js

import request from "@/util/request";

/**
 * 1. 保存用户设置（头像 + 背景色）
 */
export async function saveUserSettings(systemEntity, avatarFile) {
    const formData = new FormData();

    // 添加 JSON 格式的 systemEntity
    formData.append(
        "systemEntity",
        new Blob([JSON.stringify(systemEntity)], {
            type: "application/json",
        })
    );

    // 添加头像文件（如果存在）
    if (avatarFile) {
        formData.append("avatar", avatarFile);
    }

    try {
        const response = await request.put(`/${systemEntity.id}/userExpansionInformation`, formData, {
            headers: {
                "Content-Type": "multipart/form-data",
            },
        });

        return response.data;
    } catch (error) {
        console.error("请求失败:", error);
        throw error;
    }
}

/**
 * 2. 获取用户基本信息（含用户名、角色等）
 */
export async function getUser(id) {
    return (await request.get(`/user/${id}`)).data;
}

/**
 * 3. 获取头像 URL（用于渲染）
 */
export function getAvatarUrl(userId) {
    return `/user/${userId}/avatar`;
}

/**
 * 4. 更新用户名和密码（调用原 user-nameandpassword.js 的逻辑）
 */
export async function updateUserNameAndPassword(vm) {
    const username = vm.currentUser.username;
    const password = vm.password;

    const formData = new FormData();
    const userEntity = {
        id: vm.currentUserId,
        username,
        password,
    };

    formData.append("userEntity", new Blob([JSON.stringify(userEntity)], {
        type: "application/json"
    }));

    try {
        const response = await request.put('/system/userBasicInformation', formData, {
            headers: {
                "Content-Type": "multipart/form-data",
            },
        });

        return response.data;
    } catch (error) {
        console.error("用户名或密码更新失败:", error);
        throw error;
    }
}

/**
 * 5. 保存系统参数（调用原 update-parameters.js 的逻辑）
 */
export async function updateSystemParameters(vm) {
    const systemParams = vm.systemParams;

    const formData = new FormData();
    formData.append("borrowLimit", systemParams.borrowLimit);
    formData.append("borrowPeriod", systemParams.borrowPeriod);
    formData.append("dailyOverdueFine", systemParams.dailyOverdueFine);

    try {
        const response = await request.put('/system/parameters', formData, {
            headers: {
                "Content-Type": "multipart/form-data",
            },
        });

        return response.data;
    } catch (error) {
        console.error("系统参数更新失败:", error);
        throw error;
    }
}

/**
 * 6. 重置默认设置（调用原 update-parameters2.js 的逻辑）
 */
export async function resetDefaultSettings(vm) {
    try {
        const response = await request.put('/system/parameters2', {
            userId: vm.currentUserId,
        });

        return response.data;
    } catch (error) {
        console.error("重置默认设置失败:", error);
        throw error;
    }
}